package com.xm.queue;

import java.util.PriorityQueue;
import java.util.Queue;

/**
 * 优先级队列
 *   特点：元素按优先级排序（默认最小堆，队头是最小元素）。
 *   适用场景：任务调度、Top K 问题。
 */
public class TestPriorityQueue03 {
    public static void main(String[] args) {
        Queue<Integer> minHeap = new PriorityQueue<>();
        //入队操作
        minHeap.offer(30);
        minHeap.offer(10);
        minHeap.offer(20);
        System.out.println(minHeap.poll());// 10
        System.out.println(minHeap.poll());// 20

        //创建最大堆（通过 Comparator 翻转顺序）
        Queue<Integer> maxHeap = new PriorityQueue<>((a, b) -> b - a);
        maxHeap.offer(30);
        maxHeap.offer(10);
        maxHeap.offer(20);
        System.out.println(maxHeap.poll());// 30
        System.out.println(maxHeap.poll());// 20
        System.out.println(maxHeap.poll());// 10
        System.out.println(maxHeap.poll());// null

    }
}
